/*
 * MyColumnCellEditor.java
 * Copyright 2010 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 18/04/2010, 11:31:30 PM
 */
package com.ufps.cuatro.util.editor;

import java.awt.Component;
import java.util.ArrayList;

import javax.swing.AbstractCellEditor;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;

import com.ufps.cuatro.modelo.representacion.ObjetoTipoDatoReflexion;
import com.ufps.cuatro.modelo.representacion.UtilRepresentacion;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGenerador;

/**
 * <i><b>MyColumnCellEditor:</b></i> @DescripcionClase
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 18/04/2010
 * @see AbstractCellEditor
 * @see TableCellEditor
 */
public class MyColumnCellComboBoxComponenteEditor extends AbstractCellEditor implements TableCellEditor{
    private static final long serialVersionUID = -3362230132643168613L;        
    
    private Object obj;
    private Object[] objItems;
    private Object[] objTempItems;       
    private ComponenteDistribuidor objComponenteDistribuidorParent;    

    /**
     * @DescripcionMetodo
     */
    public MyColumnCellComboBoxComponenteEditor(ComponenteDistribuidor objComponenteDistribuidorParent, int i) {        
        this.objComponenteDistribuidorParent = objComponenteDistribuidorParent;        
        objTempItems = new Object[i];        
    }    

    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {               
      try{
        this.obj = value;        
        if(value instanceof ComponenteDistribuidor){
            ComponenteDistribuidor objComponenteDistribuidor = (ComponenteDistribuidor) value;
            if(objComponenteDistribuidor instanceof ComponenteDistribuidorGenerador){
                ComponenteDistribuidorGenerador objComponenteDistribuidorGenerador = (ComponenteDistribuidorGenerador) objComponenteDistribuidor;
                if(objTempItems[row] == null){
                    objTempItems[row] = objComponenteDistribuidorGenerador;
                }
                ObjetoTipoDatoReflexion objObjetoTipoDatoReflexion = objComponenteDistribuidorGenerador.getObjTipoDato();
                ArrayList<ComponenteDistribuidorGenerador> objList = new ArrayList<ComponenteDistribuidorGenerador>();
                ArrayList<ComponenteDistribuidorGenerador> objCDG = UtilRepresentacion.objBibliotecaTrabajoLocal.devolverColeccionRepresentacionesTipoDatoEntrada(objObjetoTipoDatoReflexion);
                objList.add((ComponenteDistribuidorGenerador)objTempItems[row]);
                objList.addAll(objCDG);
                objItems = objList.toArray();
                MyComboBoxWizardComponenteIntegradorEditor objCombo = new MyComboBoxWizardComponenteIntegradorEditor(objItems, objComponenteDistribuidorParent, row, table);                
                return objCombo;
            }
        }
        return new JLabel(String.valueOf(value));
    }catch(java.lang.NullPointerException ex){}
      return null;
    }

    public Object getCellEditorValue() {
        return this.obj;
    }
}
